package com.by.toolkit.utils;


import java.util.Optional;

/**
 * 描述：类型转化
 *
 * @author liujun
 * @date 2023年06月30 8:24 PM
 */
public class ByParseUtil {

    private ByParseUtil() {

    }

    /**
     * toInt
     *
     * @param o 对象
     * @return int
     */
    public static Optional<Integer> toInt(Object o) {
        if (o == null) {
            return Optional.empty();
        }

        if (o instanceof Integer) {
            return Optional.of((int) o);
        }

        try {
            return Optional.of(Integer.valueOf(o.toString()));
        } catch (NumberFormatException e) {
            return Optional.empty();
        }
    }

    /**
     * toInt
     *
     * @param o          对象
     * @param defaultVal 默认值
     */
    public static Integer toIntOrElse(Object o, Integer defaultVal) {
        return toInt(o).orElse(defaultVal);
    }


    /**
     * toLong
     *
     * @param o 对象
     * @return long
     */
    public static Optional<Long> toLong(Object o) {
        if (o == null) {
            return Optional.empty();
        }

        if (o instanceof Long) {
            return Optional.of((long) o);
        }

        try {
            return Optional.of(Long.valueOf(o.toString()));
        } catch (NumberFormatException e) {
            return Optional.empty();
        }
    }

    /**
     * toLong
     *
     * @param o          对象
     * @param defaultVal 默认值
     */
    public static Long toLongOrElse(Object o, Long defaultVal) {
        return toLong(o).orElse(defaultVal);
    }

}
